条件表达式
最近更新时间: 2024-10-17 17:10:00
CASE
CASE 表达式是一种通用的条件表达式,类似其他编程语言中的 if…else 语句,语法格式如下:
CASE WHEN condition THEN result
[WHEN ...]
[ELSE result]
END
或者:
CASE expression
WHEN value THEN result
[WHEN ...]
[ELSE result]
END
示例:
postgres=# CREATE TABLE test(a INT);
NOTICE: Replica identity is needed for shard table, please add to this table through "alter table" command.
CREATE TABLE
postgres=# INSERT INTO test VALUES(1),(2),(3);
COPY 3
postgres=# SELECT * FROM test;
a
---
1
3
2
(3 rows)
postgres=# SELECT a,
postgres-# CASE WHEN a=1 THEN 'one'
postgres-# WHEN a=2 THEN 'two'
postgres-# ELSE 'other'
postgres-# END
postgres-# FROM test;
a | case
---+-------
1 | one
3 | other
2 | two
(3 rows)
postgres=# SELECT a,
postgres-# CASE a WHEN 1 THEN 'one'
postgres-# WHEN 2 THEN 'two'
postgres-# ELSE 'other'
postgres-# END
postgres-# FROM test;
a | case
---+-------
1 | one
3 | other
2 | two
(3 rows)
COALESCE
COALESCE 函数返回它的第一个非空参数的值,仅当所有参数都为空时才返回空。它通常用于为显示目的检索数据时用缺省值替换空值。
语法格式如下:
COALESCE(value [, ...])
示例:
postgres=# SELECT COALESCE(null,'a',null,'hello');
coalesce
----------
a
(1 row)
NULLIF
NULLIF 语法格式如下:
NULLIF(value1, value2)
当 value1 和 value2 相等时,NULLIF 返回一个空值,否则返回 value1。
示例:
postgres=# SELECT NULLIF('hello','hello');
nullif
--------
(1 row)
postgres=# SELECT NULLIF(null,'hello');
nullif
--------
(1 row)
postgres=# SELECT NULLIF('hello',null);
nullif
--------
hello
(1 row)
GREATEST 和 LEAST
GREATEST 和 LEAST 函数从一个任意的数字表达式列表中选取最大或最小的数值,语法格式如下:
GREATEST(value [, ...])
LEAST(value [, ...])
示例:
postgres=# SELECT GREATEST(1,2,3,4,5);
greatest
----------
5
(1 row)
postgres=# SELECT LEAST(1,2,3,4,5);
least
-------
1
(1 row)